Service providers commonly desire to load balance their networks at a granularity of “flows”, where a “flow” is based on a set of header fields. Examples of such header fields include Media Access Control (MAC) addresses, Internet Protocol (IP) addresses, Transmission Control Protocol (TCP) ports, User Datagram Protocol (UDP) ports, etc. It is useful to ensure all of the packets or frames within a flow are transmitted across the same path to ensure a constant latency, consistent packet ordering, and a consistent Maximum Transmission Unit (MTU) for the flow.
A packet flow is referenced by a flow identifier, which is generally a hash of chosen network fields. The service provider network then delivers all packets marked with a particular flow identifier across the same set of network links. While different flows delivered to the service provider may travel across different sets of network links, all packets with the same flow identifier will be delivered the same way. This is often known as Equal Cost Multiple Paths (ECMPs).